<?php

namespace Xin\Menu\Contracts;

interface Repository
{
	/**
	 * 获取配置
	 * @param array $search
	 * @return array
	 */
	public function all(array $search = []);

	/**
	 * 获取菜单
	 *
	 * @param mixed $identifier
	 * @return array
	 */
	public function get($identifier);

	/**
	 * 创建菜单
	 *
	 * @param array $data
	 * @return array
	 */
	public function insert(array $data);

	/**
	 * 更新菜单
	 *
	 * @param mixed $identifier
	 * @param array $data
	 * @return array
	 */
	public function update($identifier, array $data);

	/**
	 * 移除菜单
	 *
	 * @param mixed $identifier
	 */
	public function delete($identifier);

	/**
	 * 移除菜单（根据app进行删除）
	 *
	 * @param string $app
	 */
	public function deleteByApp(string $app);

	/**
	 * 移除所有菜单
	 */
	public function deleteAll();

}
